package router

import (
	_ "crow-qin/docs"
	"github.com/gin-gonic/gin"
	swaggerFiles "github.com/swaggo/files"
	ginSwagger "github.com/swaggo/gin-swagger"
	"net/http"
)

func initRouter() (r *gin.Engine) {
	r = gin.Default()
	return r
}

func ServerRouter() {
	r := initRouter()
	r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
	//创建一个groupV1组，里边放一个检查存活的接口
	groupV1 := r.Group("/api/v1")
	{
		groupV1.GET("/ping", Ping)
		groupV1.GET("/version", Version)

		//admin接口
		adm := rAdmin{}
		groupV1.POST("/admin/user", adm.auth(), adm.CreateUser)                     //批量创建用户
		groupV1.DELETE("/admin/user/:uuid", adm.auth(), adm.DeleteUser)             //删除指定用户
		groupV1.PUT("/admin/user/list/password", adm.auth(), adm.ResetUserPassword) //批量重置用户密码
		groupV1.PUT("/admin/user", adm.auth(), adm.UpdateUsersInfo)                 //修改用户信息（不能改密码）
		groupV1.GET("/admin/user/list", adm.auth(), adm.GetUserList)                //获取用户列表
		groupV1.GET("/admin/user/:uuid", adm.auth(), adm.GetUser)                   //查询指定用户

		//普通用户操作接口
		us := rUser{}
		groupV1.PUT("/user/info", us.user(), us.UpdateUserInfo)         //用户修改自己的信息
		groupV1.PUT("/user/password", us.user(), us.UpdateUserPassword) //用户修改自己的密码
		groupV1.GET("/user/info", us.user(), us.GetUserInfo)            //用户查询自己信息

		//普通用户登录接口
		groupV1.POST("/login", us.Login)                      //登录服务
		groupV1.POST("/logout", us.user(), us.Logout)         //用户登出
		groupV1.POST("/login/refresh", us.user(), us.Refresh) //生成新token
	}

	//前端相关路由
	webGroup := r.Group("")
	{
		webGroup.GET("/", indexHtml)
		webGroup.StaticFS("/js", http.Dir("./web/js"))
		//r.StaticFile("/deamon.js", "./web/deamon.js")
	}

	r.Run(":1840")
}
